#include <my_header.h>
// 使用sigaction 注册一个2号信号

/* Usage: ./6_sigaction_sigaction*/
void func(int sig_val, siginfo_t *info, void *p)
{
    printf("sig_val :%d\n", sig_val);
}
int main(int argc, char *argv[]){
    // 创建两个结构体对象
    struct sigaction act, old;
    // 清空
    memset(&act, 0, sizeof(act));
    // 指向一个处理函数
    act.sa_sigaction = func;
// `SA_SIGINFO`：使用 `sa_sigaction` 成员而不
// 是 `sa_handler` 作为信号处理函数。
    act.sa_flags = SA_SIGINFO;
    // 要捕获的信号SIGINT 
    // act信号的新处理动作指向func函数
    // old上一个信号的处理动作 act信号
    sigaction(SIGINT, &act, &old);
    while(1);
    return 0;
}

#if 0

int sigaction(
  int signum, // 要操作的信号编号(除了不能捕获的SIGKILL和SIGSTOP)
  const struct sigaction *act,// 指定信号的新处理动作(如果非空)
  struct sigaction *oldact// 获取信号的上一个处理动作(如果非空)
);
// 返回值: 成功时返回0，错误时返回-1
#endif
